Tutorial Lengkap: Membuat Fitur Register di Laravel

Posted on 16 August 2024


Setelah kita berhasil membuat fitur login di Laravel seperti yang telah dibahas sebelumnya​(login), sekarang kita akan melanjutkan dengan fitur register. Pada tutorial ini, kita akan membuat fitur register yang dapat diakses langsung dari halaman login, dengan tombol Register di samping tombol Login.

1. Menyiapkan Environment

Sebelum memulai, pastikan Anda sudah menginstal Laravel dan melakukan konfigurasi database seperti di tutorial login. Jika belum, silakan ikuti langkah berikut:

  • Instal Laravel: composer create-project --prefer-dist laravel/laravel project-name
  • Buat tabel users dengan migrasi: php artisan migrate

2. Membuat Controller Register

Untuk menangani registrasi, kita perlu membuat controller yang khusus menangani proses registrasi pengguna.

Buat controller dengan perintah berikut:

php artisan make:controller Auth/RegisterController

Kemudian, buka file app/Http/Controllers/Auth/RegisterController.php dan tambahkan kode berikut:

namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Validator; class RegisterController extends Controller { public function create() { return view('auth.register'); } public function store(Request $request) { $this->validator($request->all())->validate(); $user = $this->createUser($request->all()); // Redirect ke halaman login setelah registrasi return redirect()->route('login')->with('success', 'Registrasi berhasil, silakan login.'); } protected function validator(array $data) { return Validator::make($data, [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]); } protected function createUser(array $data) { return User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']), ]); } }

3. Membuat View Register

Selanjutnya, buat tampilan untuk halaman register. Tambahkan file

 resources/views/auth/register.blade.php:

@extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-header">{{ __('Register') }}</div> <div class="card-body"> <form method="POST" action="{{ route('register') }}"> @csrf <div class="form-group row"> <label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label> <div class="col-md-6"> <input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }}" required autocomplete="name" autofocus> @error('name') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> <div class="form-group row"> <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label> <div class="col-md-6"> <input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email"> @error('email') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> <div class="form-group row"> <label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label> <div class="col-md-6"> <input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password"> @error('password') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> <div class="form-group row"> <label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label> <div class="col-md-6"> <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password"> </div> </div> <div class="form-group row mb-0"> <div class="col-md-8 offset-md-4"> <button type="submit" class="btn btn-primary"> {{ __('Register') }} </button> </div> </div> </form> </div> </div> </div> </div> </div> @endsection

4. Menambahkan Rute Register

use App\Http\Controllers\Auth\RegisterController; Route::get('/register', [RegisterController::class, 'create'])->name('register'); Route::post('/register', [RegisterController::class, 'store']);

5. Memodifikasi Tampilan Login untuk Menambahkan Tombol Register

Terakhir, modifikasi halaman login (resources/views/auth/login.blade.php) untuk menambahkan tombol register di samping tombol login:

<div class="form-group row mb-0"> <div class="col-md-8 offset-md-4"> <button type="submit" class="btn btn-primary"> {{ __('Login') }} </button> <a href="{{ route('register') }}" class="btn btn-secondary"> {{ __('Register') }} </a> </div> </div>

6. Menguji Aplikasi

Setelah langkah-langkah di atas selesai, jalankan server dengan php artisan serve dan akses halaman http://localhost:8000/register untuk melihat hasilnya.

Kesimpulan

Dengan mengikuti tutorial ini, Anda telah berhasil menambahkan fitur register beserta tombol register di samping tombol login pada aplikasi Laravel Anda. Anda telah belajar membuat controller khusus untuk proses registrasi, membuat view untuk form register, menambahkan rute yang relevan, dan memodifikasi tampilan login agar lebih interaktif dengan tombol register.

Langkah ini penting untuk memberikan pengalaman pengguna yang lebih baik dan memastikan bahwa pengguna dapat dengan mudah mendaftar dan mengakses aplikasi Anda.

Membangun aplikasi Laravel yang fungsional dan lengkap membutuhkan ketelitian dan dedikasi. Jangan pernah ragu untuk terus belajar dan berinovasi dalam setiap fitur yang Anda tambahkan. Tantangan yang Anda hadapi saat membangun aplikasi adalah bagian dari proses pembelajaran yang akan memperkaya kemampuan Anda sebagai seorang developer.

Ingat, setiap kesulitan adalah kesempatan untuk menjadi lebih baik. Teruslah berkembang, dan jangan pernah berhenti mencoba!